// var version = require('../package.json').version
//import p from '../package.json'
import ajax from './request/ajax'
import utils from './utils';

// console.log('ajax',ajax)
let Godebug = function() {
    //this.prototype. //存储事件的对象 
    //软件版本
    this.version = 'version';
    //上报key
    this.appKey = '';
    //基本上报路径
    this.url = '';
    //性能上报url
    this.performanceURL = '';
    // 错误上报url
    this.errorURL = '//127.0.0.1:3002/error/report';
    //错误上报时间 true 立即 false不上报 其他数字为具体单位时间 秒
    this.errorReportTime = true;
    // 性能上报时间 'load'
    /*
     load 资源加载完成
     ready dom解析完成
     resourcesLoad ready前请求的接口 加载完成
    */
    this.performanceReportTime = true;
}
Godebug.prototype = {
    $handlers: {},
    // 上报记录的事件类型
    reportEvent: ['click'],
    //上报简单模式，采用img上报(没有详细记录，只有错误信息) 否则采用 post
    simple: false,

    //上报日志级别
    levels: ['log'],
    // 最大记录条数
    maxRecordCount: 20,
    // 资源不监控
    silentResource: false,
    // http请求不监控
    silentHttp: false,
    //控制台日志不监控
    silentConsole: false,
    constructor: Godebug,
    $$reqUrl:{},
    $$reqUrlCount:0,
    isReady:false,
    // 监听事件
    on(type, handler) {
        if (typeof this.$handlers[type] == 'undefined') this.$handlers[type] = [];
        this.$handlers[type].push(handler); //将要触发的函数压入事件函数命名的数组中
    },
    off(type, $handlers) {
        if (!this.$handlers[type]) return;
        var $handlers = this.$handlers[type];
        if (handler == undefined) {
            $handlers.length = 0; //不传某个具体函数时，解绑所有
        } else if ($handlers.length) {
            for (var i = 0; i < $handlers.length; i++) {
                if ($handlers[i] == handler) {
                    //解绑单个
                    this.$handlers[type].splice(i, 1);
                }
            }
        }
    },
    emit(type, data) {
        if (this.$handlers[type] instanceof Array) {
            var $handlers = this.$handlers[type];
            //遍历事件函数监听的程序，依次执行
            for (var i = 0; i < $handlers.length; i++) {
                //    $handlers[i](data);
                //  _log(data)
                $handlers[i].call(this, data)
            }
        }
    },
    log(msg, send) {
        // debugger
        if (!this.$msg_id) {
            this.$msg_id = utils.getTime();
            this.$msg = [];
        }
        if(typeof msg !='string'){
            msg = JSON.stringify(msg);
        }
        this.$msg.push({
            time: utils.getTime(),
            msg
        });
        send && this.logEnd();
    },
    logEnd() {
        _log('消息上报');
        _log(this.$msg);
        let data = {
            msg:this.$msg,
            type:'wx'
        }
        this.emit('sendLog',data);
    },
    notifyError() {},
    notifyHttpError() {},
    notify(msg) {
        this.emit('report', {
            mes: msg
        })
        console.log('请查看右键')
    },
}


// Godebug
export default new Godebug();